如何配置 QEMU 虚拟机网络

您所在的位置:网站首页 linux 虚拟机怎么配置网络设置 如何配置 QEMU 虚拟机网络

如何配置 QEMU 虚拟机网络

2024-06-11 10:04| 来源: 网络整理| 查看: 265

关于 QEMU 的网络策略 QEMU 提供 4 种网络通信方法,它们分别是:

User mode stack:用户协议栈方式,这种方式的大概原理是在 QEMU 进程中实现一个协议栈,这个协议栈可以被视为一个主机与虚拟机之间的 NAT 服务器,它负责将 QEMU 所模拟的系统网络请求转发到外部网卡上面,从而实现网络通信。但是不能将外面的请求转发到虚拟机内部,并且虚拟机 VLAN 中的每个接口必须放在 10.0.2.0 子网中。 socket: 为 VLAN 创建套接字,并把多个 VLAN 连接起来。 TAP/bridge:最重要的一种通信方式,我们想要实现 QEMU 虚拟机和外部通信就需要使用这种方式。 VDE:也是用于连接 VLAN 的,如果没有 VLAN 连接需求基本用不到。 重点解释一下 tap 模式,TAP 属于 LInux 内核支持的一种虚拟化网络设备,还有 TUN 也属于这种设备,它们完全由软件模拟实现,TUN/TAP 负责在内核协议栈和用户进程之间传送协议数据单元。TUN 工作在网络层,而 TAP 工作在数据链路层,TUN 负责与应用程序交换 IP 数据包,而 TAP 与应用程序交换以太网帧。所以 TUN 经常涉及路由,而 TAP 常用于网络桥接。

所谓桥接可以简单理解为在两张网卡之间搭一座桥,一端有数据就可以通过桥走到另一端,对于实现 QEMU 虚拟机通信正合适。桥接技术在 VMWARE 中非常常用,我们设置虚拟机网络的时候就能看见桥接选项,实际上 VMware 在物理机上虚拟化了 3 张网卡,分别负责桥接、仅主机、共享网络。

具体的配置过程 (首先确定你的机器支持 TAP/TUN 虚拟设备)

首先安装如下软件

apt-get install bridge-utils # 虚拟网桥工具 apt-get install uml-utilities # UML(User-mode linux)工具

添加网桥,大部分操作都需要 root 权限:

ifconfig down # 首先关闭宿主机网卡接口 brctl addbr br0 # 添加名为 br0 的网桥 brctl addif br0 # 在 br0 中添加一个接口 brctl stp br0 off # 如果只有一个网桥,则关闭生成树协议 brctl setfd br0 1 # 设置 br0 的转发延迟 brctl sethello br0 1 # 设置 br0 的 hello 时间 ifconfig br0 0.0.0.0 promisc up # 启用 br0 接口 ifconfig 0.0.0.0 promisc up # 启用网卡接口 dhclient br0 # 从 dhcp 服务器获得 br0 的 IP 地址 brctl show br0 # 查看虚拟网桥列表 brctl showstp br0 # 查看 br0 的各接口信息

当配置完成之后执行 ifconfig 结果应该如下:

在这里插入图片描述

此时网桥已经得到了 IP,并且能够连接网络的网卡 enp0s5 也加入了网桥,此时我们的网桥状态大致是这种情况 在这里插入图片描述

桥的一端连接到 enp0s5,我们只需要再把另一端接到 QEMU 虚拟机(准确的说是 VLAN )上面就可以了。

创建一个 TAP 设备,作为 QEMU 一端的接口:

tunctl -t tap0 -u root # 创建一个 tap0 接口,只允许 root 用户访问 brctl addif br0 tap0 # 在虚拟网桥中增加一个 tap0 接口 ifconfig tap0 0.0.0.0 promisc up # 启用 tap0 接口 brctl showstp br0 # 显示 br0 的各个接口

此时网桥的信息应该是: 在这里插入图片描述

这样就相当于把两张网卡通过网桥连起来了:

在这里插入图片描述

现在只需要启动镜像,指定网络连接模式是 TAP 即可。

sudo qemu-system-mipsel -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_squeeze_mipsel_standard.qcow2 -append "root=/dev/sda1 console=tty0" -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no

特别说明一下参数含义:-net nic 表示希望 QEMU 在虚拟机中创建一张虚拟网卡,-net tap 表示连接类型为 TAP,并且指定了网卡接口名称(就是刚才创建的 tap0,相当于把虚拟机接入网桥)。

script 和 downscript 两个选项的作用是告诉 QEMU 在启动系统的时候是否调用脚本自动配置网络环境,如果这两个选项为空,那么 QEMU 启动和退出时会自动选择第一个不存在的 tap 接口(通常是 tap0)为参数,调用脚本 /etc/qemu-ifup 和 /etc/qemu-ifdown。由于我们已经配置完毕,所以这两个参数设置为 no 即可。

等到镜像 boot 完毕,在命令行中 ping 一下百度: 在这里插入图片描述

至此网络配置成功。

参考链接 https://blog.csdn.net/u014022631/article/details/53411557

https://shadow-file.blogspot.com/2013/05/running-debian-mips-linux-in-qemu.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3